package com.swak.wechat;

import com.swak.codec.Base64;
import com.swak.utils.StringUtils;

/**
 * 微信的基本配置
 *
 * @author: lifeng
 * @date: 2020/4/1 12:16
 */
public interface WechatConfig extends AppConfig {

	/**
	 * app_id
	 *
	 * @return appid
	 */
	String getAppId();

	/**
	 * app_Secret
	 *
	 * @return app_Secret
	 */
	String getSecret();

	/**
	 * 接入token
	 *
	 * @return token
	 */
	String getToken();

	/**
	 * 消息加密
	 *
	 * @return 消息加密
	 */
	String getAesKey();

	/**
	 * 获得加密信息的字节码序列: 可以使用字段存储起来
	 * 
	 * @return
	 */
	default byte[] getAesKeyBytes() {
		return getAesKey() != null ? Base64.decodeBase64(getAesKey() + "=") : null;
	}

	/**
	 * 原始ID
	 *
	 * @return 原始ID
	 */
	String getSrcId();

	/**
	 * 配置信息
	 *
	 * @return 配置信息
	 */
	Object getSetting();

	/**
	 * App 的Access token，实例化或者刷新Config 时保存
	 *
	 * @return AccessToken
	 */
	default String getAccessToken() {
		return StringUtils.EMPTY;
	}

	/**
	 * App 的Ticket，实例化或者刷新Config 时保存
	 *
	 * @return AccessToken
	 */
	default String getJsSdkTicket() {
		return StringUtils.EMPTY;
	}

	/**
	 * AccessToken 的 RefreshToken
	 *
	 * @return app_Secret
	 */
	default String getRefreshToken() {
		return StringUtils.EMPTY;
	}
}
